package com.shen.library_nettysocket

/**
 * IMS默认配置，若不使用默认配置，应提供set方法给应用层设置
 */
object IMSConfig {
    /** 默认「重连一个周期」失败·间隔时长 */
    const val DEFAULT_RECONNECT_INTERVAL = 3 * 1000L
    /** 连接「超时」时长 */
    const val DEFAULT_CONNECT_TIMEOUT = 10 * 1000
    /** 默认「一个周期·重连次数」 */
    const val DEFAULT_RECONNECT_COUNT = 3
    /** 默认「重连·起始延时·时长」，重连规则：最大n次，每次延时「n * 起始延时」时长，重连次数达到n次后，重置 */
    const val DEFAULT_RECONNECT_BASE_DELAY_TIME = 3 * 1000
    /** 默认「消息发送·失败」重发次数 */
    const val DEFAULT_RESEND_COUNT = 3
    /** 默认「消息重发」间隔时长 */
    const val DEFAULT_RESEND_INTERVAL = 8 * 1000

    /** 默认 应用在「前台」时「心跳消息」间隔时长 */
    const val DEFAULT_HEARTBEAT_INTERVAL_FOREGROUND = 3 * 1000
    /** 默认 应用在「后台」时「心跳消息」间隔时长 */
    const val DEFAULT_HEARTBEAT_INTERVAL_BACKGROUND = 30 * 1000

    const val KEY_APP_STATUS = "key_app_status"
    /** 应用在「前台」标识 */
    const val APP_STATUS_FOREGROUND = 0
    /** 应用在「后台」标识 */
    const val APP_STATUS_BACKGROUND = -1

    /** 默认「服务端返回的消息」·「发送成功状态」报告 */
    const val DEFAULT_REPORT_SERVER_SEND_MSG_SUCCESSFUL = 1
    /** 默认「服务端返回的消息」·「发送失败状态」报告 */
    const val DEFAULT_REPORT_SERVER_SEND_MSG_FAILURE = 0

    /** ims连接状态：连接中 */
    const val CONNECT_STATE_CONNECTING = 0
    /** ims连接状态：连接成功 */
    const val CONNECT_STATE_SUCCESSFUL = 1
    /** ims连接状态：连接失败 */
    const val CONNECT_STATE_FAILURE = -1
}